相比於 x86 指令手冊動輒上千頁,MIPS 指令集只需要這兩頁即可呈現
MIPS 指令主要分為以下三種:R(Register) 型、 I(Immediate) 型、以及 J(Jump) 型
R 型指令格式包含六個區塊:opcode 和 funct 是6bits、其他皆是 4bits
opcode 用於指定指令類型、對於所有 R 型指令該值均為 0,用 funct 來精確指定指令類型
Rs (Source Register):指定第一個來源操作數的暫存器編號
Rt (Target Register):指定第二個來源操作數的暫存器編號
Rd (Destination Register):指定目的操作數的暫存器編號
5bits 也正好可以代表上一篇所提到的 32個通用暫存器
shamt 表示位移的位數
例: add $8, $9, $10 → opcode:0,funct:32,shamt:0
$8 = $9 + $10
所以轉換成指令碼就是: 000000 01001 01010 01000 00000 10000
這樣一來就可以很容易的進行譯碼和轉換
下一篇在繼續說明 I 型與 J 型指令
大家可以想一下為什麼 R型指令中 opcode 和 funct 要特別分前後兩段而不合起來呢?